home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / autocomplete_manager-2.3-fx.xpi / chrome / acmanager.jar / content / treeUtils.js < prev   
Text File  |  2008-03-14  |  3KB  |  112 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public
  5.  * License Version 1.1 (the "License"); you may not use this file
  6.  * except in compliance with the License. You may obtain a copy of
  7.  * the License at http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS
  10.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  11.  * implied. See the License for the specific language governing
  12.  * rights and limitations under the License.
  13.  *
  14.  * The Original Code is mozilla.org code.
  15.  *
  16.  * The Initial Developer of the Original Code is Netscape
  17.  * Communications Corporation.  Portions created by Netscape are
  18.  * Copyright (C) 1998 Netscape Communications Corporation. All
  19.  * Rights Reserved.
  20.  *
  21.  * Contributor(s): Nikitas Liogkas <nikitas@acm.org>
  22.  * Version: 2.3
  23.  *
  24.  * ***** END LICENSE BLOCK ***** */
  25.  
  26. // treeUtils.js
  27. // History Manager tree utility functions; code taken from cookieviewer/treeUtils.js
  28.  
  29. // returns the current selections on the tree
  30. function acm_getTreeSelections(tree) 
  31. {
  32.   var selections = [];
  33.   var select = tree.view.selection;
  34.   if (select) {
  35.     // different selection blocks
  36.     var count = select.getRangeCount();
  37.     var min = new Object();
  38.     var max = new Object();
  39.     for (var i = 0; i < count; i++) {
  40.       select.getRangeAt(i, min, max);
  41.       for (var k = min.value; k <= max.value; k++) {
  42.         if (k !== -1) 
  43.           selections[selections.length] = k;
  44.       }
  45.     }
  46.   }
  47.   return selections;
  48. }
  49.  
  50. // sorts the tree and remembers the most recent selection
  51. function acm_sortHistoryTree()
  52. {
  53.   // remember which item was selected so we can restore it after the sort
  54.   var selections = acm_getTreeSelections(acm_treeHistory);
  55.   var selectedId = selections.length ? acm_history[selections[0]].id : -1;
  56.  
  57.   // do the sorting
  58.   acm_history.sort(acm_alphaHistorySortFun);
  59.  
  60.   // restore the original selection: scan the array for the unique id of the previously selected entry
  61.   var selectedRow = -1;
  62.   if (selectedId >= 0) {
  63.     for (var i = 0, len = acm_history.length; i < len; i++) {
  64.       if (acm_history[i].id === selectedId) {
  65.         acm_treeHistory.view.selection.select(i);
  66.         selectedRow = i;
  67.         break;
  68.       }
  69.     }
  70.   } 
  71.  
  72.   // display the results
  73.   acm_treeHistory.treeBoxObject.invalidate();
  74.   if (selectedRow >= 0) 
  75.     acm_treeHistory.treeBoxObject.ensureRowIsVisible(selectedRow);
  76. }
  77.  
  78. // sorts in alphabetical order, after ignoring common protocols and prefixes
  79. function acm_alphaHistorySortFun(candidateA, candidateB)
  80. {
  81.   // are we in the Add Entry dialog?
  82.   if (document.getElementById("acm_addEntryBox")) {
  83.     acm_histSortCriterion = opener.acm_histSortCriterion;
  84.     acm_histSortDirection = opener.acm_histSortDirection;
  85.   }
  86.  
  87.   // leave as is for URLs, munge for titles
  88.   var candA, candB;
  89.   if (acm_histSortCriterion === "URL") {
  90.     candA = candidateA;
  91.     candB = candidateB; 
  92.   }
  93.   else {
  94.     // manufacture appropriate objects to pass as arguments
  95.     candA = new Object();
  96.     candA.strippedURL = candidateA.strippedTitle;
  97.     candA.URL = "";
  98.     candB = new Object();
  99.     candB.strippedURL = candidateB.strippedTitle;
  100.     candB.URL = "";
  101.   }
  102.  
  103.   // NOTE: acm_checkBookFirst is false here
  104.   var retvalue = acm_alphaURLCompareFun(candA, candB);
  105.  
  106.   // ascending or descending?
  107.   if (acm_histSortDirection)
  108.     return retvalue;
  109.   else 
  110.     return -retvalue;
  111. }
  112.